package com.chuangke.file.service;

import java.math.BigInteger;
import java.util.Collection;
import java.util.List;

import com.chuangke.file.model.FileDbank;
import com.chuangke.file.model.FileDbankSpace;

/**
 * 
 * @author chuangke
 * @date "2020-09-02"
 */
public interface FileDbankService{
	
	/**
	 * 注册网盘
	 * @param belongId
     */
	void regist(String belongId, String dbankType, String remarks, BigInteger limitSpace) ;
	
	/**
	 * 扩展网盘空间大小
	 * @param dbankId
	 * @param space
	 */
	void expandSpace(String dbankId, BigInteger space) ;
	
	/**
	 * 增加已使用网盘空间大小
	 * @param dbankId
	 * @param space
	 */
	void addUsedSpace(String dbankId, BigInteger space) ;
	
	/**
	 * 初始化网盘已用空间
	 */
	void initDbankUsedSpace() ;
	
	/**
	 * 加载网盘信息，并携带网盘的空间信息
	 * @param dbankId
	 * @return
	 */
	FileDbank loadDbankWithSpaceById(String dbankId) ;
	
	/**
	 * 加载网盘信息，并携带网盘的空间信息
	 * @return
	 */
	FileDbank getDbank(String type,String belongId) ;
	
	/**
	 * 加载网盘信息
	 * @param dbankId
	 * @return
	 */
	FileDbank loadDbankById(String dbankId) ;
	
	/**
	 * 加载网盘的空间信息
	 * @param dbankId
	 * @return
	 */
	FileDbankSpace loadDbankSpace(String dbankId) ;
	
	/**
	 * 获取用户拥有网盘权限的网盘
	 * @param userId
	 * @param dbankType
	 * @return
	 */
	Collection<FileDbank> listAuthDbanks(String userId,String dbankType) ;
	
	/**
	 * 获取共享给用户文件所在的网盘
	 * @param userId
	 * @param dbankType
	 * @return
	 */
	Collection<FileDbank> listAuthFileDbanks(String userId,String dbankType) ;
	
	List<FileDbank> listDbank() ;
	
	List<FileDbank> listDbanks(String dbankType) ;
	
}
